<!DOCTYPE html>
<html lang="zh-Hans-CN">
<head>
  <meta charset="UTF-8">
  <title>Lambert材质（MeshLambertMaterial）</title>
</head>
<body onload="init()">
<script src="../three.min.js"></script>
<script>
  /* 参数
   -----------------------------------------------------------------

   new THREE.MeshLambertMaterial({
    color: 0xffff00
   })

   color 是用来表现材质对散射光的反射能力，
   也是最常用来设置材质颜色的属性。
   除此之外，还可以用 ambient 和 emissive 控制材质的颜色。
   ambient 表示对环境光的反射能力，只有当设置了 AmbientLight 后，该值才是有效的
   emissive 是材质的自发光颜色，可以用来表现光源的颜色。

   其光照模型公式为：
   Idiffuse = Kd * Id * cos(theta)

   Idiffuse 是漫反射光强
   Kd 是物体表面的漫反射属性，
   Id 是光强，
   theta 是光的入射角弧度

   -----------------------------------------------------------------
   */

  function init() {
    let renderer = new THREE.WebGLRenderer();
    renderer.setSize(400, 300);
    document.body.appendChild(renderer.domElement);
    renderer.setClearColor(0x000000)

    let scene = new THREE.Scene();

    let camera = new THREE.PerspectiveCamera(50, 400 / 300, 1, 10)
    camera.position.set(3, 3, 5);
    camera.lookAt(new THREE.Vector3(0, 0, 0));
    scene.add(camera);

    var light = new THREE.DirectionalLight(0xffffff);
    light.position.set(-5, 10, 5);
    scene.add(light);

    let cube = new THREE.Mesh(
//        new THREE.CubeGeometry(2, 2, 2),
        new THREE.SphereGeometry(2, 22, 22),
        new THREE.MeshLambertMaterial({
          color: 0xffff00,
          emissive: 0xff0000
        })
    );
    scene.add(cube);

    renderer.render(scene, camera);
  }
</script>
</body>
</html>